﻿using System;
using RDev.Correios.CalcPrecoPrazo;

namespace RDev.Correios.UserInterface.View
{
    public partial class CalcularFrete : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ButtonCalcular_Click(object sender, EventArgs e)
        {
            CalculaFrete();
        }

        private void CalculaFrete()
        {
            try
            {
                if (TextBoxValorProduto.Text == string.Empty)
                {
                    LblMensagem.Text = "Para calcular o frete é necessário informar o valor do produto.";
                    return;
                }

                LblMensagem.Text = string.Empty;
                string nuCep = TextBoxCepDestino.Text;
                decimal VlProduto = decimal.Parse(TextBoxValorProduto.Text.ToString().Replace("R$", ""));

                if (nuCep == string.Empty)
                {
                    LblMensagem.Text = "Digite o número do cep.";
                    return;
                }

                if (nuCep.Length < 8)
                {
                    LblMensagem.Text = "Cep de destino é inválido.";
                    return;
                }

                //Calcula o Valor do Frete, sistema verifica o tamanho das caixas para fazer cálculo.
                decimal valorPac = 0;
                decimal valorSedex = 0;
                decimal nVlComprimento = 0;
                decimal nVlAltura = 0;
                decimal nVlLargura = 0;
                decimal nVlDiamentro = 0;
                nVlComprimento = decimal.Parse(TextBoxComprimento.Text);
                nVlAltura = decimal.Parse(TextBoxAltura.Text);
                nVlLargura = decimal.Parse(TextBoxLargura.Text);
                nVlDiamentro = decimal.Parse(TextBoxDiametro.Text);
                CalcularFreteCorreios correios = new CalcularFreteCorreios();

                var calcularFrete = new Entity.CalcularFrete
                                        {
                                            NuCepOrigem = TextBoxCepOrigem.Text,
                                            NuCepDestino = TextBoxCepDestino.Text,
                                            CidadeOrigem = TextBoxCidadeOrigem.Text,
                                            Servico = 40010,
                                            NVlComprimento = nVlComprimento,
                                            NVlAltura = nVlAltura,
                                            NVlLargura = nVlLargura,
                                            NVlDiametro = nVlDiamentro,
                                            NuPeso = decimal.Parse(TextBoxPeso.Text)
                                        };

                cResultado retornoSedex =
                    correios.ConsultaWebServiceCorreios(calcularFrete);

                if (retornoSedex.Servicos.Length > 0)
                {

                    // Se deu tudo certo, então retorna o valor

                    if (retornoSedex.Servicos[0].Erro == "0")
                    {

                        TextBoxPrazoEntrega.Text = retornoSedex.Servicos[0].PrazoEntrega.ToString() + " dia(s).";
                        valorSedex = decimal.Parse(retornoSedex.Servicos[0].Valor.ToString());
                    }
                    else
                    {
                        LblMensagem.Text = retornoSedex.Servicos[0].MsgErro;
                    }
                }
                else
                {
                    LblMensagem.Text = "NÃO FOI POSSÍVEL CONSULTAR O SERVIÇO DESEJADO!";
                }

                calcularFrete.Servico = 41106;//PAC
                cResultado retornoPac = correios.ConsultaWebServiceCorreios(calcularFrete);

                if (retornoPac.Servicos.Length > 0)
                {

                    // Se deu tudo certo, então retorna o valor
                    if (retornoPac.Servicos[0].Erro == "0")
                    {
                        TextBoxPrazoEntrega.Text = retornoPac.Servicos[0].PrazoEntrega.ToString() + " dia(s).";
                        valorPac = decimal.Parse(retornoPac.Servicos[0].Valor.ToString());
                    }
                    else
                    {
                        LblMensagem.Text = retornoPac.Servicos[0].MsgErro;
                    }

                }
                else
                {
                    LblMensagem.Text = "NÃO FOI POSSÍVEL CONSULTAR O SERVIÇO DESEJADO!";
                }

                TextBoxSedex.Text = valorSedex.ToString();
                TextBoxPac.Text = valorPac.ToString();
            }
            catch (Exception ex)
            {

                LblMensagem.Text = ex.Message;
            }

        }
    }
}